<!--

    Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
    <title>Ajax Request Test Page</title>
</h:head>
<h:body>
    <h:outputScript library="javax.faces" name="jsf.js" target="head"/>

    <h1>Simple Event Test</h1>
    <h:form id="countForm">
<!--   Render the entire form, including the enclosed script.
       This tests if included scripts have their CDATA blocks
       escaped correctly.
    -->
<script type="text/javascript">
var statusUpdate = function statusUpdate(data) {
    var statusArea = document.getElementById("statusArea");
    var text = statusArea.value;
    text = text + "Name: "+data.source.id;
    if (data.type === "event") {
        text = text +" Event: "+data.name+" ";
    } else {  // otherwise, it's an error
        text = text + " Error: "+data.name+" ";
    }
    statusArea.value = text;
}
</script>
        <h:outputText id="out1" value="#{ajaxrequest.count}"/>
        <br/>
        <!-- Increment the counter on the server, and the client -->
        <h:commandButton id="button1" value="Count"
                         onclick="jsf.ajax.request(this, event, {execute: this.id, render: 'countForm', onevent: statusUpdate, onerror: statusUpdate}); return false;"/>
        <br/>
        <!-- Resets the counter, doesn't refresh the page -->
        <h:commandButton id="reset" value="reset"
                            onclick="jsf.ajax.request(this, event, {execute:'countForm:reset', render: 'countForm:out1', onevent: statusUpdate, onerror: statusUpdate}); return false;"
                            actionListener="#{ajaxrequest.resetCount}"/>
    </h:form>
    <!-- Contained outside the form - shouldn't update except for full page load -->
    <h:outputText id="out2" value="#{ajaxrequest.count}"/>
    <p>
        <h3> Status:</h3>
        <textarea id="statusArea" cols="40" rows="10" readonly="readonly" />
    </p>
</h:body>
</html>
